package utils;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
MD5加密封装
 */
public class Utils {
    public static String md5(String str){
        try {
            //1.类可以获取 MD5 实例
            MessageDigest instance = MessageDigest.getInstance("md5");
            //2.计算字符串内容的摘要，并得到计算后的 hash value
            //StandardCharsets.UTF_8 用来指定计算时使用的编码格式，如果不指定则会使用系统默认编码格式，系统之间不统一会造成中文乱码
            byte[] digest = instance.digest(str.getBytes(StandardCharsets.UTF_8));

            StringBuilder sb = new StringBuilder();
            for (byte b:digest){
                //sb.append(String.format(“%02x”, b)) 用于将字节信息转为十六进制
                sb.append(String.format("%02x",b));
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }

    public static String SHA256(String str){
        try {
            //1.类可以获取 MD5 实例
            MessageDigest instance = MessageDigest.getInstance("sha256");
            //2.计算字符串内容的摘要，并得到计算后的 hash value
            //StandardCharsets.UTF_8 用来指定计算时使用的编码格式，如果不指定则会使用系统默认编码格式，系统之间不统一会造成中文乱码
            byte[] digest = instance.digest(str.getBytes(StandardCharsets.UTF_8));

            StringBuilder sb = new StringBuilder();
            for (byte b:digest){
                //sb.append(String.format(“%02x”, b)) 用于将字节信息转为十六进制
                sb.append(String.format("%02x",b));
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }
}
